package com.key.service;

import com.key.common.dto.StocktakingAssetDTO;
import com.key.common.dto.StocktakingFormDTO;
import com.key.common.dto.StocktakingFormFindDTO;
import com.key.common.dto.StocktakingSurplusDTO;
import com.key.common.vo.StocktakingFormDetailsVO;
import com.key.entity.StocktakingForm;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.util.List;
import java.util.Map;

/**
 * @author wei
 */
public interface StocktakingFormService {

    /**
     * 添加盘点单
     * @param stocktakingFormDTO
     * @return
     */
    boolean addStocktakingForm(StocktakingFormDTO stocktakingFormDTO);

    /**
     * 删除盘点单
     * @param sfNo
     * @return
     */
    boolean removeStocktakingForm(String sfNo);

    /**
     * 查询盘点单，可分页
     * @param stocktakingFormFindDTO
     * @return
     */
    Map<String, Object> findStocktakingForm(StocktakingFormFindDTO stocktakingFormFindDTO);

    /**
     * 根据单号查询盘点表
     * @param sfNo
     * @return
     */
    StocktakingFormDetailsVO findStocktakingFormDetailsVOBySfNo(String sfNo);

    /**
     * 根据单号查询分配的用户
     * @param sfNo
     * @return
     */
    List<String> findEmployeeBySfNo(String sfNo);

    /**
     * 修改分配的用户
     * @param sfNo
     * @param assignEmpsName
     * @return
     */
    boolean editAssignedUsers(String sfNo, List<String> assignEmpsName);

    /**
     * 未盘点员工查询
     * @param sfNo
     * @return
     */
    List<Map<String, Object>> findIncompleteEmployees(String sfNo);

    /**
     * 根据单号查询盘点单下所有的资产
     * @param currentPage
     * @param pageSize
     * @param sfNo
     * @return
     */
    Map<String, Object> findStocktakingAssetsBySfNo(Integer currentPage, Integer pageSize, String sfNo);

    /**
     * 根据盘点单号和资产id删除盘盈
     * @param stocktakingSurplusDTO
     * @return
     */
    boolean removeStocktakingSurplus(StocktakingSurplusDTO stocktakingSurplusDTO);

    /**
     * 修改盘点资产
     * @param stocktakingSurplusDTO
     * @return
     */
    boolean editStocktakingAsset(StocktakingSurplusDTO stocktakingSurplusDTO);

    /**
     * 提交盘点单
     * @param sfNo
     * @return
     */
    boolean submitStocktaking(String sfNo);

    /**
     * 添加盘盈
     * @param stocktakingAssetDTO
     * @return
     */
    boolean addStocktakingSurplus(StocktakingAssetDTO stocktakingAssetDTO);

    HSSFWorkbook getWorkBook(String sfNo);

    HSSFWorkbook getWorkBook();
}
